//Sorting Algorithms
#ifndef Sorting_h
#define Sorting_h

float *sort1D(float *temparry,int Size)
{
     int pass,i, min_index;
     float temp1;
       for(pass=0;pass<Size-1;pass++)
       {
                               min_index=pass;
                               for(i=pass+1;i<Size;i++)
                               {
                                                    if(temparry[i]<temparry[min_index])
                                                    {
                                                       min_index=i;
                                                       }
                               }
                               if(min_index!=pass)
                               {
                                                  temp1=temparry[pass];
                                                  temparry[pass]=temparry[min_index];
                                                  temparry[min_index]=temp1;

                               }
    }
return temparry;
}
int *sort1Dint(int *temparry,int Size)
{
     int pass,i, min_index;
     int temp1;


       for(pass=0;pass<Size-1;pass++)
    {
                               min_index=pass;
                               for(i=pass+1;i<Size;i++)
                               {
                                                    if(temparry[i]<temparry[min_index])
                                                    {
                                                       min_index=i;
                                                       }
                               }
                               if(min_index!=pass)
                               {
                                                  temp1=temparry[pass];
                                                  temparry[pass]=temparry[min_index];
                                                  temparry[min_index]=temp1;

                               }
    }

return temparry;
}

int *sortedindx(float *temparry, int Size)
{
		int pass, i,*indx, min_index,temp2;
		float temp1;
		indx=alloc1Dint(Size);

		for(pass=0;pass<Size;pass++)
		  indx[pass]=pass;
       for(pass=0;pass<Size-1;pass++)
       {
                               min_index=pass;
                               for(i=pass+1;i<Size;i++)
                               {
                                                    if(temparry[i]>=temparry[min_index])
                                                    {
                                                       min_index=i;
													}
                               }

                               if(min_index!=pass)
                               {
                                                 temp1=temparry[pass];
		     	                                 temparry[pass]=temparry[min_index];
                                                 temparry[min_index]=temp1;
                                                 temp2=indx[pass];
                                                 indx[pass]=indx[min_index];
                                                 indx[min_index]=temp2;

                               }

    }


return indx;

}

int *sortedindxascend(float *temparry, int Size)
{
		int pass, i,*indx, min_index,temp2;
		float temp1;
		indx=alloc1Dint(Size);

		for(pass=0;pass<Size;pass++)
		  indx[pass]=pass;
       for(pass=0;pass<Size-1;pass++)
       {
                               min_index=pass;
                               for(i=pass+1;i<Size;i++)
                               {
                                                    if(temparry[i]<temparry[min_index])
                                                    {
                                                       min_index=i;
													}
                               }

                               if(min_index!=pass)
                               {
                                                 temp1=temparry[pass];
		     	                                 temparry[pass]=temparry[min_index];
                                                 temparry[min_index]=temp1;
                                                 temp2=indx[pass];
                                                 indx[pass]=indx[min_index];
                                                 indx[min_index]=temp2;

                               }

    }


return indx;

}
#else
#endif
